package conductores;

import aima.search.framework.HeuristicFunction;

public class FuncionDeBondad implements HeuristicFunction  {

  int distancia;//distancia recorrida en el estado inicial
  
  public FuncionDeBondad(Board board){
  
	  distancia=board.getDistanciaTotal();
	  
  }

  public int getHeuristicValue(Object state) {

   Board board=(Board)state;

   int distRecorrida = board.getDistanciaTotal();  //Calculamos la distancia que recorren todos los conductores
   int numTotalConductores=Context.getInstance().getNumConductores();//Numero de conductores total que pueden haber en el sistema
   int numConductoresActivos=board.getConductores().size();
   
   int ConductoresEnHora=board.llegadaEnHora();
   double valorD= (double)distRecorrida/(double)distancia;
   double valorC= (double)numConductoresActivos/(double)numTotalConductores;
   double valorP= 1-((double)ConductoresEnHora/(double)numConductoresActivos);
   valorP = valorP*valorP;
   int result= (int)((valorD*0.7+valorC*0.3+valorP)*100000);
   return result;
  }

}


